Die (verkettete) Liste ist eine dynamische Datenstruktur, die eine Speicherung von miteinander in Beziehung stehenden Objekten erlaubt. Die Anzahl der Objekte ist im Vorhinein nicht bestimmt. Die Liste wird durch Zeiger auf die jeweils folgende(n) Knoten oder Speicherzellen des Arbeitsspeichers realisiert.
Ordnung schaffen - Listen
Sortieralgorithmen
Das Bubblesort-Verfahren
- Durchlaufe die Liste von links nach rechts. Vergleiche in jedem Schritt das aktuelle Element mit dem rechten Nachbarn. Ist der rechte Nachbar kleiner, dann tausche die Elemente
- Am Ende des Durchgangs steht nun das größte Element am Ende der Liste und muss beim nächsten Durchlauf nicht mehr beachtet werden.
- Das Verfahren wird solange wiederholt, bis die Eingabeliste vollständig sortiert ist.
Man sieht auf den ersten Blick, dass dieses Verfahren nicht besonders effektiv ist. Deshalb hier ein deutlich besseres Verfahren:
Das Selectionsort-Verfahren
- Beginne mit dem ersten Element in der Liste und suche nach dem kleinsten Element in der restlichen Liste. Vertausche nun das gefundene Element mit dem ersten Element. (Ausnahme: Das erste Element ist das kleinste Element. Dann bleibt es natürlich stehen.). Dieses erste Element ist nun der sortierte Teil der Liste.
- Fahre nun mit dem zweiten Element fort und gehe genauso wie oben vor, d.h. suche nach dem kleinsten Element im unsortierten Teil der Liste.
- Gehe nun in der restlichen Liste genauso vor bis die gesamte Liste sortiert ist.
Andere Verfahren arbeiten noch wesentlich effektiver, sind aber auch deutlich komplizierter und auf große Datenmengen ausgerichtet.
Suchalgorithmen
Lineare Suche
Binäre Suche
Zuerst wird das mittlere Element des Felds überprüft. Es kann kleiner, größer oder gleich dem gesuchten Element sein. Ist es kleiner als das gesuchte Element, muss das gesuchte Element in der hinteren Hälfte stecken, falls es sich dort überhaupt befindet. Ist es hingegen größer, muss nur in der vorderen Hälfte weitergesucht werden. Die jeweils andere Hälfte muss nicht mehr betrachtet werden. Ist es gleich dem gesuchten Element, ist die Suche beendet.
In der zu untersuchenden Hälfte (und erneut in den folgenden Hälften) wird genauso verfahren: Das mittlere Element liefert wieder die Entscheidung darüber, ob und wo weitergesucht werden muss. Die Länge des Suchbereiches wird so von Schritt zu Schritt halbiert. Spätestens wenn der Suchbereich auf ein einzelnes Element geschrumpft ist, ist die Suche beendet. Dieses eine Element ist entweder das gesuchte Element, oder das gesuchte Element kommt nicht vor.